www.gusucode.com > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序 > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序\code\PhManage\ProviderDlg.cpp
//Download by http://www.NewXing.com // ProviderDlg.cpp : implementation file // #include "stdafx.h" #include "PhysicM.h" #include "ProviderDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CProviderDlg dialog CProviderDlg::CProviderDlg(CWnd* pParent /*=NULL*/) : CDialog(CProviderDlg::IDD, pParent) { //{{AFX_DATA_INIT(CProviderDlg) m_ProviderDemo = _T(""); m_ProviderJC = _T(""); m_ProviderName = _T(""); //}}AFX_DATA_INIT } void CProviderDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CProviderDlg) DDX_Control(pDX, IDC_PROVIDER_LIST, m_ProviderList); DDX_Text(pDX, IDC_PROVIDER_DEMO, m_ProviderDemo); DDX_Text(pDX, IDC_PROVIDER_JC, m_ProviderJC); DDX_Text(pDX, IDC_PROVIDER_NAME, m_ProviderName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CProviderDlg, CDialog) //{{AFX_MSG_MAP(CProviderDlg) ON_BN_CLICKED(IDC_DELBTN, OnDelbtn) ON_BN_CLICKED(IDC_ADDBTN, OnAddbtn) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CProviderDlg message handlers BOOL CProviderDlg::OnInitDialog() { CDialog::OnInitDialog(); m_ProviderList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); char *head[]={"序 号","供应商名称","供应商简称","备注","供应商ID"}; int i; for (i=0;i<5;i++) m_ProviderList.DeleteColumn(0); for (i=0;i<5;i++) m_ProviderList.InsertColumn(i,head[i],LVCFMT_LEFT,(i==1) ? 150 : 100,i); ImageList=new CImageList(); ImageList->Create(16,16,TRUE | ILC_COLOR32,2,0); ImageList->Add(AfxGetApp()->LoadIcon(IDI_ICONUSER)); ImageList->Add(AfxGetApp()->LoadIcon(IDR_MENUVIEW_TMPL)); m_ProviderList.SetImageList(ImageList,LVSIL_SMALL);// LVSIL_NORMAL); ShowInfo(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CProviderDlg::ShowInfo() { m_ProviderList.DeleteAllItems(); DBLibrary DB(GetDB()); // DB.init(); try{ iCount=1; DB.Open("SELECT provider_id,provider_name ,provider_jc,demo FROM provider order by provider_id"); char name[40],jc[40],demo[50],index[4]; memset(name,0,40); memset(jc,0,40); memset(demo,0,50); memset(index,0,4); while (!DB.isEof()) { DB.GetValue("provider_name",name); DB.GetValue("provider_jc",jc); DB.GetValue("demo",demo); sprintf(index,"%03d",iCount); m_ProviderList.InsertItem(iCount-1,index,0); m_ProviderList.SetItemText(iCount-1,1,(LPCTSTR)name); m_ProviderList.SetItemText(iCount-1,2,(LPCTSTR)jc); m_ProviderList.SetItemText(iCount-1,3,(LPCTSTR)demo); sprintf(index,"%03d",DB.GetValue("provider_id")); m_ProviderList.SetItemText(iCount-1,4,(LPCTSTR)index); iCount++; DB.Next(); } } catch (DBErr &err) { char *estr; int ecode; err.GetLastErr(ecode,&estr); ShowErr(estr,ecode); } catch(...) { ShowErr("unknow error!",-1); } } CPhysicMApp *CProviderDlg::GetApp() { return (CPhysicMApp *)AfxGetApp(); } CDBSession CProviderDlg::GetDB() { return ((CPhysicMApp *)AfxGetApp())->DBSession; } void CProviderDlg::ShowErr(char *str,int code) { if(GetApp()->pMainFrm==NULL) { MessageBox(str,"错误提示",MB_OK | MB_ICONERROR); return; } GetApp()->pMainFrm->AddErr("%s(errcode:%d)",str,code); } BOOL CProviderDlg::DestroyWindow() { // TODO: Add your specialized code here and/or call the base class if (ImageList) delete ImageList; return CDialog::DestroyWindow(); } void CProviderDlg::OnDelbtn() { GetApp()->Delete("provider","provider_id",&m_ProviderList,4); } void CProviderDlg::OnAddbtn() { UpdateData(); m_ProviderName.TrimRight(); m_ProviderName.TrimLeft(); if (m_ProviderName.IsEmpty()) { ShowErr("供应商名称不能为空",-1); return; } AddInfo(m_ProviderName,m_ProviderJC,m_ProviderDemo); } void CProviderDlg::AddInfo(CString m_ProviderName,CString m_ProviderJC,CString m_ProviderDemo) { DBLibrary DB(GetDB()); int max_id=0; try{ DB.Open("select ident_current('provider') did " " from information_schema.tables where table_name='provider' "); double id=0; DB.GetValue("did",&id); max_id=(int)id +1; DB.ExecSQL("INSERT INTO provider (provider_name,provider_jc,demo) " "VALUES('%s','%s','%s')",m_ProviderName,m_ProviderJC,m_ProviderDemo); GetApp()->pMainFrm->AddLog("新增供应商:%s",m_ProviderName); char no[4]; int icount=m_ProviderList.GetItemCount(); memset(no,0,4); sprintf(no,"%03d",icount+1); m_ProviderList.InsertItem(m_ProviderList.GetItemCount(),no,0); m_ProviderList.SetItemText(icount,1,m_ProviderName); m_ProviderList.SetItemText(icount,2,m_ProviderJC); m_ProviderList.SetItemText(icount,3,m_ProviderDemo); sprintf(no,"%03d",max_id); m_ProviderList.SetItemText(icount,4,no); } catch (DBErr &err) { char *estr; int ecode; err.GetLastErr(ecode,&estr); ShowErr(estr,ecode); } catch(...) { ShowErr("unknow error!",-1); } } void CProviderDlg::OnOK() { // TODO: Add extra validation here // CDialog::OnOK(); }